1. Field of the Invention
The present invention generally relates to network communications. More particularly, the present invention relates to determining a suitable alternate path in a multi-path network transport mechanism. Still more particularly, the invention relates to computing and using the variance of a computed sequence of timeout values as a function in determining a suitable communication path.
2. Background Information
Network communications generally involve a number of devices (called “nodes”), such as computers, that sends and receives data transmissions across a plurality of inter-connected network communication devices, such as switches, routers, and the like. A node typically has several “layers” of network communication-related software. An application running on the node hands the communication software data to be transmitted to a certain node and the communication software generally takes care of coordinating the transfer of the data to the destination node.
One of the software layers is a transmission protocol layer in which a particular communication protocol is implemented on the data. Currently, several competing software standards are used to implement the protocol layer. One such protocol standard is referred to as the Stream Control Transmission Protocol (“SCTP”). SCTP is a robust, high performance communication protocol that generally guarantees delivery of the data to the destination node within a certain period of time, or else will notify the sending node's application of the failure of the communication.
The robustness of SCTP's delivery mechanism is facilitated by its ability to send data via any one of a plurality of communication paths or channels. Broadly, if the current channel is unusable, then the protocol logic will cause a switch to be made to an alternate channel. More specifically, SCTP continuously monitors the availability of each channel to the remote node. This monitoring process entails estimating maximum round-trip times (i.e., the total time for a packet to be transmitted and an acknowledgment to be returned) from successful transmissions, sending heartbeat messages on idle channels, and watching for lost (i.e., unacknowledged) packets for each channel. If certain path-specific thresholds are violated (e.g., repeated expiration of retransmission timeout values), that path can be designated as “inactive” and will not be used to carry further SCTP messages until the situation is rectified.
In conventional SCTP implementations, a list of the channels is maintained. One of the channels is designated as the primary channel and is used for all communications until the thresholds are exceeded for that channel. At that time, the protocol switches to the next channel on the list. If, and when, that channel fails, the protocol again switches to the next channel on the list.
Although the conventional SCTP implementation works well, it is not problem free. In some cases, the algorithms used to monitor the quality of a channel and the thresholds used to invoke the inactive designation can create a type of instability in the transmission of SCTP messages. This instability might be noticed in various ways, including the continued use of an inferior-quality primary channel which has not crossed poorly chosen usability thresholds or the selection of an inferior quality alternate path due to use of poorly chosen thresholds and methods which incorrectly designate the primary path as unusable. In general, current implementations do not always switch to the most appropriate channels when the primary channel exceeds its thresholds. An improved channel switching technique is highly desired.